<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script>
    var arr = [1,2,2,2,2,3,4,5,3,2,1,2,5];
    for(var i = 0 ; i< arr.length ;i++){
        //console.log(arr[i])
        for(var b = i+1; b<arr.length ;b++){
            if(arr[i]==arr[b]){
                arr.splice(b,1);
                b--;
            }
           // console.log(arr[b])
        }
    }
    console.log(arr)
    var arr1 = [5,3,5,3,7,8,95,647,8,474];
    arr1.sort(function(a,b) {
        // if(a<b){
        //     return -1;
        // }else if(a>b){
        //     return 1;
        // }else{
        //     return 0;
        // }
        return b-a;
    });
    console.log(arr1);
    //函数的两个方法，call和apply方法都会调用函数,可以将一个对象指定为第一个参数，此时这个对象将会成为对象执行的this
    //call(2.3),apply(obj[1,3])可以传递实参
    /*this的情况
        1、以函数的形式调用this时，this永远都是window
        2、以对象的形式调用this时，this是调用方法的对象
        3、以构造函数的形式调用this时，this是新创建的对象
        4、以call和apply的方法调用this时，this是指定的那个对象
    */
    function fun() {
        alert(this);
        console.log(this);
    };
    var obj = {
        name:"obj",
        seyhello:function(params) {
            alert(this.name);
        }
    }
    var obj2 = {
        name:"obj2",
    };
    
    obj.seyhello.apply(obj2);
</script>
<body>
    
</body>
</html>